/*
要求：
    给出一串正整数数列以及一个正整数C个整数，
    要求计算出所有满足A−B=C的数对的个数（不同位置的数字一样的数对算不同的数对）。
输入：
    第一行，两个整数N，C。
    第二行，N个正整数，作为要求处理的那串数。
输出：
    一行，表示该串正整数中包含的满足A−B=C的数对的个数。
解答：
    将问题转化为，对于每一个数A，查找数组中是否存在数B，使得A-B=C，即B=A-C
*/
#include<bits/stdc++.h>
using namespace std;

const int N = 2e5 + 10;
int n, c, a[N];

int findl(int x)
{
	int l = 0, r = n - 1;
    while (l <= r) {
        int mid = l + (r - l) / 2;
        if (a[mid] < x) {
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }
    if (l < n && a[l] == x) {
        return l;
    }
    return -1;
}

int findr(int x)
{
	int l = 0, r = n - 1;
    while (l <= r) {
        int mid = l + (r - l) / 2;
        if (a[mid] <= x) {
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }
    if (r >= 0 && a[r] == x) {
        return r;
    }
    return -1;
}

int main()
{
	cin >> n >> c;
	for (int i = 0; i < n; ++ i)
		cin >> a[i];
	sort(a, a + n);
	long long ans = 0;
	for(int i = 0; i < n; ++ i)
	{
		int x = a[i];
        if(findr(x - c) != -1) ans += (findr(x - c) - findl(x - c)) + 1;
	}
	cout << ans << endl;
	return 0;
}
